Automated tuning of a quality of service setting for a distributed storage system based on internal monitoring

ABSTRACT

Systems and methods for automated tuning of Quality of Service (QoS) settings of volumes in a distributed storage system are provided. According to one embodiment, responsive to a predetermined event, information regarding a multiple QoS settings assigned to a volume of a distributed storage system that is being utilized by a client are obtained. A difference between a first QoS setting of the multiple QoS settings and a second QoS setting of the multiple QoS settings is determined. Responsive to determining the difference is less than a threshold a new value of the first QoS setting or a third QoS setting of the multiple QoS settings that is greater than a respective current value of the first QoS setting or the third QoS setting is determined and assigned to the volume for the client.

COPYRIGHT NOTICE

Contained herein is material that is subject to copyright protection.The copyright owner has no objection to the facsimile reproduction ofthe patent disclosure by any person as it appears in the Patent andTrademark Office patent files or records, but otherwise reserves allrights to the copyright whatsoever. Copyright © 2021, NetApp, Inc.

BACKGROUND Field

Various embodiments of the present disclosure generally relate to datastorage systems. In particular, some embodiments relate to improvingefficiency and user experience by monitoring Quality of Service (QoS)settings in a distributed storage system and automatically tuning theQoS settings as may be appropriate to address various issues, includingunder or over-provisioning and/or other issues that may result inperformance degradation.

Description of the Related Art

Multiple storage nodes organized as a cluster (also referred to hereinas a distributed storage system) may provide a distributed storagearchitecture configured to service storage requests issued by one ormore clients of the cluster. The storage requests are directed to datastored on storage devices coupled to one or more of the storage nodes ofthe cluster. The data served by the storage nodes may be distributedacross multiple storage units embodied as persistent storage devices,such as hard disk drives, solid state drives, flash memory systems, orother storage devices. The storage nodes may logically organize the datastored on the devices as volumes accessible as logical units. Eachvolume may be implemented as a set of data structures, such as datablocks that store data for the volume and metadata blocks that describethe data of the volume. For example, the metadata may describe, e.g.,identify, storage locations on the devices for the data. The data ofeach volume may be divided into data blocks. The data blocks may bedistributed in a content driven manner throughout the nodes of thecluster.

One way of attempting to provide a better user experience is byproviding a Quality of Service feature that allows users to set a QoSthat guarantees a particular level of performance for volumes. Forexample, QoS may guarantee a particular level of performance byprovisioning minimum, maximum, and/or burst levels of input/outputoperations per second (IOPS) to volumes.

SUMMARY

Systems and methods are described for automatically tuning QoS settingsof volumes in a distributed storage system. According to one embodiment,responsive to a predetermined event, information regarding a multipleQoS settings assigned to a volume of a distributed storage system thatis being utilized by a client are obtained. A difference between a firstQoS setting of the multiple QoS settings and a second QoS setting of themultiple QoS settings is determined. Responsive to determining thedifference is less than a threshold a new value of the first QoS settingor a third QoS setting of the multiple QoS settings that is greater thana respective current value of the first QoS setting or the third QoSsetting is determined and assigned to the volume for the client.

According to another embodiment, a set of volumes of multiple volumes ofa distributed storage system that are being utilized by a client isdetermined in which each volume of the set of volumes satisfies a firstQoS setting assigned to the volume and a second QoS setting assigned tothe volume. A subset of the set of volumes is determined in which eachvolume of the subset satisfies an upper bound of a range based on aminimum IOPS setting of the volume. For one or more volumes of thesubset, a new value of the first QoS setting that is less than a currentvalue of the first QoS setting is determined and assigned to therespective volume for the client.

According to another embodiment, for each volume of one or more volumesof multiple volumes of a distributed storage system being utilized by aclient a first number of observations within a time window in which thevolume operates at below a minimum IOPS setting of the volume isdetermined, a second number of observations within the time window inwhich the volume operates at a range between the minimum IOPS settingand a maximum IOPS setting of the volume is determined, and a thirdnumber of observations within the time window in which the volumeexceeds an upper bound of the range and in which the volume exceeds themaximum IOPS setting is determined. A determination is made regardingwhether a quotient based on the first, second, and third numbers ofobservations is greater than a percentage threshold for a given volume.Responsive to determining that the quotient is greater than thepercentage, the minimum IOPS setting of the given volume is increased bydetermining a new value of the minimum IOPS setting for the volume thatis greater than a current value of the minimum IOPS setting andassigning the new value of the minimum IOPS setting to the volume forthe client.

Other features of embodiments of the present disclosure will be apparentfrom accompanying drawings and detailed description that follows.

BRIEF DESCRIPTION OF THE DRAWINGS

In the Figures, similar components and/or features may have the samereference label. Further, various components of the same type may bedistinguished by following the reference label with a second label thatdistinguishes among the similar components. If only the first referencelabel is used in the specification, the description is applicable to anyone of the similar components having the same first reference labelirrespective of the second reference label.

FIG. 1 is a block diagram illustrating an environment in which variousembodiments may be implemented.

FIG. 2 is a block diagram illustrating a storage node in accordance withan embodiment of the present disclosure.

FIG. 3 is a flow diagram illustrating a set of operations forautomatically increasing QoS settings in accordance with an embodimentof the present disclosure.

FIG. 4 is a flow diagram illustrating a set of operations forautomatically decreasing QoS settings of a volume in accordance with anembodiment of the present disclosure.

FIG. 5 is a flow diagram illustrating a set of operations forautomatically increasing burst input/output per second (IOPS) settingsof a volume based on minimum and maximum IOPS settings of the volumebeing too closer together in accordance with an embodiment of thepresent disclosure.

FIG. 6 is a flow diagram illustrating a set of operations forautomatically increasing burst IOPS settings of a volume based onmaximum and burst IOPS settings of the volume being too close togetherin accordance with an embodiment of the present disclosure.

FIG. 7 is a flow diagram illustrating a set of operations forautomatically decreasing minimum IOPS settings of a volume in accordancewith an embodiment of the present disclosure.

FIG. 8 is a flow diagram illustrating a set of operations forautomatically decreasing maximum IOPS settings of a volume in accordancewith an embodiment of the present disclosure.

FIG. 9 is a flow diagram illustrating a set of operations forautomatically increasing minimum IOPS settings of a volume in accordancewith an embodiment of the present disclosure.

FIG. 10 is a flow diagram illustrating a set of operations forautomatically increasing maximum IOPS settings of a volume in accordancewith an embodiment of the present disclosure.

FIG. 11 is a flow diagram illustrating a set of operations forautomatically decreasing maximum IOPS settings of a volume based on atarget IOPS setting for the volume in accordance with an embodiment ofthe present disclosure.

FIG. 12 illustrates an example computer system in which or with whichembodiments of the present disclosure may be utilized.

FIG. 13 is a graph illustrating IOPS push back in accordance with anembodiment of the present disclosure.

DETAILED DESCRIPTION

Systems and methods are described for automatically tuning QoS settingsof volumes in a distributed storage system. One way of attempting toprovide a better user experience for users of distributed storagesystems is by providing a QoS feature that allows users to set a QoSthat guarantees a particular level of performance for volumes of thedistributed storage system. For example, QoS may guarantee a particularlevel of performance by provisioning minimum, maximum, and/or burstlevels of input/output operations per second (IOPS) to the volumes.

While proper settings for various QoS parameters enhance overallperformance of a distributed storage system, provisioning of QoSparameters (e.g., minimum, maximum, and burst levels of IOPS) to volumesis highly dynamic and complex, especially across many volumes of sliceservices. For example, access to a volume by a client may changefrequently. Accordingly, the client may repeatedly need to pay attentionand provision IOPS to volumes frequently. Additionally, the level ofcomplexity may be difficult to understand for many clients. Accordingly,clients may consistently misconfigure their QoS settings (e.g., byover-provisioning or under-provisioning their minimum levels of IOPS).For example, if a client disproportionately allocates the minimum IOPSsettings, maximum IOPS settings, and/or the burst IOPS settings of aplurality of volumes accessed by the client, load balancing issues mayarise if the allocation does not accurately reflect the desiredperformance In some examples, the load on the volumes may be unbalancedand the user may detect poor performance from the system due to latency.Such QoS settings may occur because, for example, the client may beinexperienced in assigning QoS settings to volumes, may be inexperiencedin knowing or unaware of the workload of volumes, and the like. Suchmisconfiguration may lead to suboptimal utilization of the QoS featureand may degrade volume and overall slice service performance.

A slice service balancer may balance volumes on slice services acrossstorage nodes based on, for example, the minimum IOPS settings, themaximum IOPS settings, and/or the burst IOPS settings of the volumes.The slice service balancer may inject latency on I/O operations to keepvolumes within their allocated QoS domains. Throttle is the pushback onall volumes on a slice service, and the slice service balancer mayenforce QoS by throttling one or more volumes. Throttling a volume actsby restricting the number of IOPS that the volume is allowed to perform,for each sample period (e.g., every 500 milliseconds).

In some examples, the minimum IOPS setting of a volume may be set toohigh or too low for the volume's workloads. For example, if the minimumIOPS setting of a volume is set too high (e.g., the volume rarelyprocesses enough IOPS operations to reach the minimum IOPS setting),then too much I/O may be allocated from other volumes to a volume thatdoes not need it. In this example, it may be desirable to decrease theminimum IOPS setting of the volume. Reference to a workload exceeding aQoS setting (e.g., minimum, maximum, and/or burst IOPS setting) mayrefer to a volume processing the workload exceeding the QoS setting. Inanother example, if the minimum IOPS setting of a volume is set too low(e.g., the volume typically processes more IOPS operations than theminimum IOPS setting), then it may be desirable to increase the minimumIOPS setting of the volume to guarantee workloads running on the volumea greater number of IOPS.

In some examples, the maximum IOPS setting of a volume may be set toohigh or too low for the volume's processing workloads. For example, ifthe maximum IOPS setting of a volume is set too high (e.g., the volumerarely processes enough IOPS operations to reach the maximum IOPSsetting), then too much I/O may be allocated from other volumes to avolume that does not need it. In this example, it may be desirable todecrease the maximum IOPS setting of the volume. In another example, ifthe maximum IOPS setting of a volume is set too low (e.g., the volume istypically asked to process more IOPS operations than the maximum IOPSsetting), then the volume may be throttled along with the volumes onthat volume's slice service, resulting in degradation of performance forthe entire slice service. In this example, it may be desirable toincrease the maximum IOPS setting of the volume.

In some examples, some QoS settings may be set too close together,resulting in performance degradation. For example, if the clusterbecomes bound by I/O capacity, the volumes may be scaled back from theirmaximum IOPS level proportionally toward their minimum IOPS values toensure fair resource allocation when the system is heavily loaded. Ifthe minimum and maximum IOPS settings are too close (e.g., within athreshold), then the system may be unable to ensure fair resourceallocation when it is heavily loaded. In this example, it may bedesirable to raise the burst IOPS setting of the volume such that thevolume is able to process more IOPS during a spike in demand In anotherexample, if the maximum and burst IOPS settings are too close, thevolume may be unable to effectively process IOPS during a spike indemand In this example, it also may be desirable to raise the burst IOPSsetting of the volume such that the volume is able to process more IOPSduring a spike in demand. Accordingly, if a client disproportionatelyallocates the minimum IOPS settings, maximum IOPS settings, and/or theburst IOPS settings of a plurality of volumes accessed by the client,load balancing issues may arise if the allocation does not accuratelyreflect the desired performance.

Embodiments described herein seek to improve the technological processof identifying appropriate QoS settings for a distributed storagesystem. Various embodiments of the present technology provide for a widerange of technical effects, advantages, and/or improvements to computingsystems and components. For example, various embodiments may includetechnical effects, advantages, and/or improvements relating to one ormore of (i) tuning of QoS settings so as to achieve enhanced volume andoverall slice service performance as well as fair resource allocationamong multiple storage nodes of a distributed storage system; (ii)triggering of automated tuning of appropriate QoS settings based onperiodic evaluation of various scenarios that are likely to result indegradation of system performance; and (iii) use of non-routine andunconventional computer operations to enhance the monitoring of volumeoperations and/or use of current QoS settings to facilitate automatedtuning of QoS settings for volumes of a distributed storage system.

In the context of various examples described herein, a QoS tuning moduleis implemented internally to the distributed storage system and isoperable to evaluate current QoS settings and automatically tune (e.g.,increase or decrease) the QoS settings as appropriate. For example,responsive to identifying a scenario in which degradation of systemperformance is considered likely to occur, the QoS tuning module mayreplace a current QoS setting of a volume with a newly determined valuefor the QoS setting of one or more applicable volumes. By proactivelyand automatically modifying the QoS settings of volumes, throttling ofthe volumes may be reduced and accordingly, the distributed storagesystem and network may run more efficiently and further improve theuser's experience. As described further below, various advantages ofimplementing such automated QoS tuning functionality within thedistributed storage system as opposed to externally include thefrequency at which various data and/or metrics are available and theavailability of additional data and/or metrics that may not beaccessible via an Application Programming Interface (API) provided bythe distributed storage system.

In the following description, numerous specific details are set forth inorder to provide a thorough understanding of embodiments of the presentdisclosure. It will be apparent, however, to one skilled in the art thatembodiments of the present disclosure may be practiced without some ofthese specific details. In other instances, well-known structures anddevices are shown in block diagram form.

Terminology

Brief definitions of terms used throughout this application are givenbelow.

A “computer” or “computer system” may be one or more physical computers,virtual computers, or computing devices. As an example, a computer maybe one or more server computers, cloud-based computers, cloud-basedcluster of computers, virtual machine instances or virtual machinecomputing elements such as virtual processors, storage and memory, datacenters, storage devices, desktop computers, laptop computers, mobiledevices, or any other special-purpose computing devices. Any referenceto “a computer” or “a computer system” herein may mean one or morecomputers, unless expressly stated otherwise.

Depending upon the particular context, a “client” may be used herein torefer to a physical or virtual machine or a process running thereon. Aclient process may be responsible for storing, retrieving, and deletingdata in the system. A client process may address pieces of datadepending on the nature of the storage system and the format of the datastored. For example, the client process may reference data using aclient address. The client address may take different forms. Forexample, in a storage system that uses file storage, the client mayreference a particular volume or partition, and a file. Name with objectstorage, the client address may be a unique object name. For blockstorage, the client address may be a volume or partition, and a blockaddress. Clients may communicate with metadata, corresponding to theslice services and the volume(s) residing on the slice services, usingdifferent protocols, such as SCSI, iSCSI, FC, common Internet filesystem (CIFS), network file system (NFS), HTTP, web-based distributedauthoring and versioning (WebDAV), or a custom protocol. Each client maybe associated with a volume. In some examples, only one client accessesdata in a volume. In some examples, multiple clients may access data ina single volume.

As used herein, “telemetry data” generally refers to performance,configuration, load, and other system data of a monitored system.Telemetry data may refer to one data point or a range of data points.Non-limiting examples of telemetry data for a distributed storage systeminclude latency, utilization, a number of input output operations persecond (IOPS), a slice service (SS) load, Quality of Service (QoS)settings, or any other performance related information.

As used herein, “slice service load” or “SS load” generally refer to ameasure of volume load per storage node of a distributed storage system.As described further below, IO operations may be throttled by thestorage operating system of the distributed storage system dependingupon and responsive to observation of the SS load exceeding variouspredefined or configurable thresholds. In one embodiment, SS load is ameasure of cache (e.g., primary cache and secondary cache) capacityutilization in bytes (e.g., percent full of 8 gigabytes (GB) in theprimary cache and a relatively large number of GB in the secondarycache). Depending upon the particular implementation, the SS load may bethe maximum between the fullness of the primary cache and the secondarycache (e.g., a maximum among all services hosting a given volume).According to one embodiment, these two metrics, along with perceivedlatency, may be the inputs into the SS load calculation. For example, SSload may be the maximum value between primary cache fullness, secondarycache fullness, and latency.

The terms “connected” or “coupled” and related terms are used in anoperational sense and are not necessarily limited to a direct connectionor coupling. Thus, for example, two devices may be coupled directly, orvia one or more intermediary media or devices. As another example,devices may be coupled in such a way that information can be passedthere between, while not sharing any physical connection with oneanother. Based on the disclosure provided herein, one of ordinary skillin the art will appreciate a variety of ways in which connection orcoupling exists in accordance with the aforementioned definition.

If the specification states a component or feature “may”, “can”,“could”, or “might” be included or have a characteristic, thatparticular component or feature is not required to be included or havethe characteristic.

As used in the description herein and throughout the claims that follow,the meaning of “a,” “an,” and “the” includes plural reference unless thecontext clearly dictates otherwise. Also, as used in the descriptionherein, the meaning of “in” includes “in” and “on” unless the contextclearly dictates otherwise.

The phrases “in an embodiment,” “according to one embodiment,” and thelike generally mean the particular feature, structure, or characteristicfollowing the phrase is included in at least one embodiment of thepresent disclosure, and may be included in more than one embodiment ofthe present disclosure. Importantly, such phrases do not necessarilyrefer to the same embodiment.

Example Operating Environment

FIG. 1 is a block diagram illustrating an environment 100 in whichvarious embodiments may be implemented. In various examples describedherein, an administrator (e.g. user 112) of a distributed storage system(e.g., cluster 135) or a managed service provider responsible formultiple distributed storage systems of the same or multiple customersmay monitor various telemetry data of the distributed storage system ormultiple distributed storage systems via a browser-based interfacepresented on a client (e.g., computer system 110).

In the context of the present example, the environment 100 is shownincluding a data center 130, a cloud 120, computer system 110, and auser 112. The data center 130, the cloud 120, and the computer systems110 may be coupled in communication via a network 105, which, dependingupon the particular implementation, may be a Local Area Network (LAN), aWide Area Network (WAN), or the Internet.

The data center 130 may represent an enterprise data center (e.g., anon-premises customer data center) that is build, owned, and operated bya company or the given data center may be managed by a third party (or amanaged service provider) on behalf of the company, which may lease theequipment and infrastructure. Alternatively, the data center 130 mayrepresent a colocation data center in which a company rents space of afacility owned by others and located off the company premises. Datacenter 130 is shown including a distributed storage system (e.g.,cluster 135) and a collector 138. Those of ordinary skill in the artwill appreciate additional IT infrastructure may be part of the datacenter 130; however, discussion of such additional IT infrastructure isunnecessary to the understanding of the various embodiments describedherein.

Turning now to the cluster 135, it includes multiple storage nodes 136a-n and an API 137. In the context of the present example, the multiplestorage nodes 136 a-n are organized as a cluster and provide adistributed storage architecture to service storage requests issued byone or more clients (e.g., computer system 110) of the cluster. The dataserved by the storage nodes 136 a-n may be distributed across multiplestorage units embodied as persistent storage devices, including but notlimited to hard disk drives, solid state drives, flash memory systems,or other storage devices. A non-limiting example of a storage node 136is described in further detail below with reference to FIG. 2 .

The API 137 may provide an interface through which the cluster 135 isconfigured and/or queried by external actors (e.g., the collector 138,clients, and a cloud-based, centralized monitoring system (e.g.,monitoring system 122). Depending upon the particular implementation,the API 137 may represent a Representational State Transfer (REST)fulAPI that uses Hypertext Transfer Protocol (HTTP) methods (e.g., GET,POST, PATCH, DELETE, and OPTIONS) to indicate its actions. Dependingupon the particular embodiment, the API 137 may provide access tovarious telemetry data (e.g., performance, configuration and othersystem data) relating to the cluster 135 or components thereof. In oneembodiment, API calls may be used to obtain information regarding acustom, proprietary, or standardized measure of the overall load oroverall performance (e.g., IOPS) of a particular storage node 136 or toobtain information regarding the overall load or performance of multiplestorage nodes 136. As those skilled in the art will appreciate variousother types of telemetry data, including, but not limited to measures oflatency, utilization, load, and/or performance at various levels (e.g.,the cluster level, the storage node level, or the storage node componentlevel), may be made available via the API 137 and/or used internally byvarious monitoring modules.

The collector 138 may be implemented locally within the same data centerin which the cluster 135 resides and may periodically poll for telemetrydata of the cluster 135 via the API 137. Depending upon the particularimplementation, the polling may be performed at a predetermined orconfigurable interval (e.g., 60 seconds). The collector 138 may locallyprocess and/or aggregate the collected telemetry data over a period oftime by data point values and/or by ranges of data point values andprovide frequency information regarding the aggregated telemetry dataretrieved from the cluster 135 to the centralized monitoring system forlocal use or analysis by the user 112.

In the context of the present example, the cloud 120, which mayrepresent a private or public cloud accessible (e.g., via a web portal)to an administrator (e.g., user 112) associated with a managed serviceprovider, includes the monitoring system 122 that may be used tofacilitate evaluation and/or selection of new QoS settings. Notably,however, the information available to the monitoring system 122 and theadministrator may not be accessible at a sufficient rate to observehigh-frequency fluctuations of values of data and/or metrics during aparticular time window and that might inform decisions relating tomaking adjustments to QoS settings. Furthermore, there may be additionaldata and/or metrics (e.g., a measure of system load (e.g., SS load), atarget IOPS, etc.)) that would be helpful to such decision-making may benot be accessible via the API 137. Hence, various embodiments describedherein involve the use of a QoS tuning module (not shown) implementedinternally to the cluster 135 and that is operable to evaluate currentQoS settings and automatically tune the QoS settings as appropriate. TheQoS tuning module is described further below with reference to FIG. 2 .

Systems Metrics and Load of a Distributed Storage System

A distributed storage system (e.g., cluster 135) may include aperformance manager or other system metric monitoring and evaluationfunctionality that can monitor clients' use of the distributed storagesystem's resources. In addition, the performance manager and/or a QoSsystem (e.g., a QoS module) may be involved in the regulation of aclient's use of the distributed storage system. The client's use of thedistributed storage system can be adjusted based upon one or more ofsystem metrics, the client's QoS settings, and the load of thedistributed storage system. System metrics may be various measurableattributes of the distributed storage system that may represent directlyor be used to calculate a load of the distributed storage system, which,as described in greater detail below, can be used to throttle clients ofthe distributed storage system.

System metrics are metrics that reflect the use of the system orcomponents of the distributed storage system by all clients. Systemmetrics can include metrics associated with the entire distributedstorage system or with components within the distributed storage system.For example, system metrics can be calculated at the system level,cluster level, node level, service level, or drive level. Spaceutilization is one example of a system metric. The cluster spaceutilization reflects how much space is available for a particularcluster, while the drive space utilization metric reflects how muchspace is available for a particular drive. Space utilization metrics canalso be determined at the system level, service level, and the nodelevel. Other examples of system metrics include measured or aggregatedmetrics such as read latency, write latency, IOPS, read IOPS, writeIOPS, I/O size, write cache capacity, dedupe-ability, compressibility,total bandwidth, read bandwidth, write bandwidth, read/write ratio,workload type, data content, data type, etc.

IOPS can be real input/output operations per second that are measuredfor a cluster or drive. Bandwidth may be the amount of data that isbeing transferred between clients and the volume of data. Read latencymay represent the time taken for the distributed storage system to readdata from a volume and return the data to a client. Write latency mayrepresent the time taken for the distributed storage system to writedata and return a success indicator to the client. Workload type canindicate if IO access is sequential or random. The data type canidentify the type of data being accessed/written, e.g., text, video,images, audio, etc. The write cache capacity may refer to a write cacheor a node, a block server, or a volume server. The write cache may beimplemented in the form of a relatively fast memory that is used tostore data before it is written to storage. As noted above, each ofthese metrics can be independently calculated for the system, a cluster,a node, etc. In addition, these values can also be calculated at aclient level.

IOPS may be calculated based on latency and the number of concurrentoutstanding read and/or write operations that may be queued (QueueDepth)by the distributed storage system as follows:IOPS=QueueDepth/Latency

Bandwidth may be calculated based on QueueDepth, latency and I/O size asfollows:Bandwidth=(QueueDepth*IOSize)/Latencywhere, IOSize is the average I/O size over a period of time (typically,falling between 4 KB to 32 KB, inclusive).

System metrics may be calculated over a period of time, e.g., 250milliseconds (ms), 500 ms, 1 second (s), etc. Accordingly, differentvalues such as a min, max, standard deviation, average, etc., can becalculated for each system metric. One or more of the metrics maydirectly represent and/or be used to calculate a value that represents aload of the distributed storage system. Loads can be calculated for thedistributed storage system as a whole, for individual components, forindividual services, and/or individual clients. System load values maythen be used by the QoS system to determine whether and how clients areto be throttled.

In some embodiments, performance for individual clients may be adjustedbased upon the monitored system metrics. For example, based on a numberof factors (e.g., system metrics and client QoS settings), a number ofIOPS that can be performed by a particular client over a period of timemay be managed. In one implementation, the performance manager and/orthe QoS system regulate the number of IOPS that are performed by lockinga client out of a volume for different amounts of time to manage howmany IOPS can be performed by the client. For example, when the clientis heavily restricted, the client may be locked out of accessing avolume for 450 ms of every 500 ms and when the client is not heavilyrestricted, the client may be blocked out of a volume for 50 ms of every500 ms. As such, in this example, the lockout effectively manages thenumber of IOPS that the client may perform every 500 ms. Althoughexamples using IOPS are described, other metrics may also be used, aswill be described in more detail below.

Client Quality of Service (QoS) Parameter Settings

In addition to system metrics, client quality of service (QoS)parameters can be used to affect how a client uses the distributedstorage system. Unlike metrics, client QoS parameters are not measuredvalues, but rather represent variables than can be set to define thedesired QoS bounds for a client. Client QoS parameters can be set by anadministrator or a client. In one implementation, client QoS parametersinclude minimum, maximum, and max burst values. Using IOPS as anexample, a minimum IOPS value is a proportional amount of performance ofa cluster for a client. Thus, the minimum IOPS is not a guarantee thatthe volume will always perform at this minimum IOPS value.

When a volume is in an overload situation, the minimum IOPS value is theminimum number of IOPS that the distributed storage system attempts toprovide the client. However, based upon cluster performance, anindividual client's IOPS may be lower or higher than the minimum valueduring an overload situation. In one implementation, the distributedstorage system can be provisioned such that the sum of the minimum IOPSacross all clients can be sustained for all clients at a given time. Inthis situation, each client should be able to perform at or above itsminimum IOPS value. The distributed storage system, however, can also beprovisioned such that the sum of the minimum IOPS across all clientscannot be sustained for all clients. In this case, if the distributedstorage system becomes overloaded through the use of all clients, theclient's realized IOPS can be less than the client's minimum IOPS value.In failure situations, the distributed storage system may also throttleusers such that their realized IOPS are less than their minimum IOPSvalue.

A maximum IOPS parameter is the maximum sustained IOPS value over anextended period of time. The burst IOPS parameter is the maximum IOPSvalue that a client can “burst” above the maximum IOPS parameter for ashort period of time based upon credits. In one implementation, creditsfor a client are accrued when a given client is operating under itsrespective maximum IOPS parameter. Accordingly, clients may be limitedto use of the distributed storage system in accordance with theirrespective maximum IOPS and burst IOPS parameters. For example, a givenclient may not be able to use the distributed storage system's fullresources, even if they are available, but rather, may be bounded by therespective maximum IOPS and burst IOPS parameters of the given client.In some embodiments, client QoS parameters can be changed at any time bythe client, an administrator, and/or by automated means (e.g., by one ofthe various automated tuning approaches described herein). Non-limitingexamples of various automated tuning approaches for QoS settings thatmay be performed by an internally implemented QoS tuning module aredescribed below with reference to FIGS. 3-11 .

Example Storage Node

FIG. 2 is a block diagram illustrating a storage node 200 in accordancewith an embodiment of the present disclosure. Storage node 200represents a non-limiting example of storage nodes 136 a-n. In thecontext of the present example, storage node 200 may include a storageoperating system (OS) 210, one or more slice services 220 a-n, and oneor more block services 216 a-q. The storage OS 210 may provide access todata stored by the storage node 200 via various protocols (e.g., smallcomputer system interface (SCSI), Internet small computer systeminterface (ISCSI), fibre channel (FC), common Internet file system(CIFS), network file system (NFS), hypertext transfer protocol (HTTP),web-based distributed authoring and versioning (WebDAV), or a customprotocol. A non-limiting example of the storage OS 210 is NetApp ElementSoftware (e.g., the SolidFire Element OS) based on Linux and designedfor SSDs and scale-out architecture with the ability to expand up to 100storage nodes. In the context of the present example, the storage OS 210also includes a QoS module 211, a workload monitoring module 212, asystem metric monitoring module 213, and a QoS tuning module 215.According to one embodiment, the QoS tuning module 215 is implemented onthe storage node representing the cluster master. The QoS tuning module215 may be responsible for periodically evaluating the QoS parametersvalues and metrics monitored and collected by the QoS module 211, theworkload monitoring module 212, and the system metric monitoring module213, evaluating the QoS parameters values and metrics as describedfurther below and automatically tuning the QoS parameters

The QoS module 211 may be responsible for applying one or more QoSsettings (e.g., maximum, minimum, and burst IOPS) to one or more volumes(e.g., volumes 221 a-x, volumes 221 c-y, and volumes 221 e-z) for aparticular client (not shown). While various examples herein may bedescribed with reference to a minimum IOPS, a maximum IOPS, and a burstIOPS as an example set of QoS settings, it is to be appreciated thevarious approaches for automated tuning of QoS settings described hereinare equally applicable to various other individual QoS settings and tosets of one or more QoS settings, including, but not limited to a readlatency parameter, a write latency parameter, a total IOPS parameter, aread IOPS parameter, a write IOPS parameter, an I/O size parameter, atotal bandwidth parameter, a read bandwidth parameter, a write bandwidthparameter, and a read/write IOPS ratio parameter. While in the contextof the present example, a single instance of the QoS module 211 is shownwithin the storage OS 210, an instance of the QoS module 211 mayalternatively be implemented within each of the slice services 220 a-n.

The workload monitoring module 212 may be responsible for monitoring andevaluating information (e.g., IOPS) indicative of a workload to whichthe storage node 200 is exposed. While various examples described hereinmay be described in the context of a total number of IOPS, it is to beappreciated the various approaches for automated tuning of QoS settingsdescribed herein are equally applicable to other individualcharacteristics of a workload or sets of one or more workloadcharacteristics, including, but not limited to a number of read IOPS, anumber of write IOPS, a proportion of read IOPS to write IOPS, an I/Osize, and a statistical measure of any of the foregoing over a period oftime.

The system metric monitoring module 213 may be responsible formonitoring and calculating a measure of load on the cluster as a wholeand/or at various levels or layers of the cluster or the storage node200. For example, metrics may be available for individual or groups ofstorage nodes (e.g., storage nodes 136 a-n), individual or groups ofvolumes 221, individual or groups of slice services 220, and/orindividual or groups of block services 216. In some embodiments, IOPsmay be throttled by the storage OS 210 depending upon and responsive toone or more system metrics (e.g., SS load) exceeding various predefinedor configurable thresholds. A graph illustrating an example of IOPS pushback is described below with reference to FIG. 13 .

While in the context of the present example, the QoS module 211, theworkload monitoring module 212, and the system metric monitoring module213 are depicted as directly interacting with the QoS tuning module 215and the QoS tuning module 215 is depicted as directly interacting withthe QoS module 211, it is to be appreciated that the QoS tuning modulemay receive information from such modules indirectly and/or convey newvalues to be applied by QoS module 211 indirectly via a shared location(e.g., a centralized service operable to maintain such configurationinformation in a distributed environment). For example, the QoS module211, the workload monitoring module 212, and the system metricmonitoring module 213 may periodically monitor and collect QoS settings,workload characteristics, and system metrics every 500 ms and persistsuch data to ZooKeeper for use by the QoS tuning module 215. Similarly,for its part, the QoS tuning module 215 may periodically (e.g., every 15minutes) or responsive to a predefined or configurable event (e.g., asystem metric and/or a workload characteristic crossing a particularthreshold) inspect the data/metrics for each volume (e.g., volume 221)in the cluster and make decisions as described below regarding whetherand how to adjust the volume's QoS settings and apply the new values tothe centralized service to facilitate such new values being acted uponaccordingly by the QoS modules throughout the cluster.

While various examples described herein may be described with referenceto the use of SS load as an example system load metric, it is to beappreciated the various approaches for automated tuning of QoS settingsdescribed herein are equally applicable various other individual systemmetrics and to sets of one or more system metrics, including, but notlimited to a read latency metric, a write latency metric, an IOPSmetric, a read IOPS metric, a write IOPS metric, a total bandwidthmetric, a read bandwidth metric, a write bandwidth metric, a read/writeIOPS ratio metric, a read/write latency metric, and a read/writebandwidth ratio metric.

Turning now to the slice services 220 a-n, each slice service 220 mayinclude one or more volumes (e.g., volumes 221 a-x, volumes 221 c-y, andvolumes 221 e-z). Client systems (not shown) associated with anenterprise may store data to one or more volumes, retrieve data from oneor more volumes, and/or modify data stored on one or more volumes. Inone embodiment, the storage node 200 also includes a primary cache and asecondary cache logically associated with the slice services 220 a-n.The primary cache may represent the first place data associated with IOoperations is temporarily buffered and may be implemented in the form ofdynamic random access memory (DRAM) backed by a battery and non-volatilememory (e.g., NAND flash) to make it persistent. The secondary cache mayrepresent a secondary location for temporarily storing data duringrainy-day scenarios. In one embodiment, the secondary cache may beimplemented within a small portion of the solid-state drives (SSDs) ofthe storage node 200.

The slice services 220 a-n and/or the client system may break data intodata blocks. Block services 216 a-q and slice services 220 a-n maymaintain mappings between an address of the client system and theeventual physical location of the data block in respective storage mediaof the storage node 200. In one embodiment, volumes 221 include uniqueand uniformly random identifiers to facilitate even distribution of avolume's data throughout a cluster (e.g., cluster 135). The sliceservices 220 a-n may store metadata that maps between client systems andblock services 216. For example, slice services 220 may map between theclient addressing used by the client systems (e.g., file names, objectnames, block numbers, etc. such as Logical Block Addresses (LBAs)) andblock layer addressing (e.g., block identifiers) used in block services216. Further, block services 216 may map between the block layeraddressing (e.g., block identifiers) and the physical location of thedata block on one or more storage devices. The blocks may be organizedwithin bins maintained by the block services 216 for storage on physicalstorage devices (e.g., SSDs).

A bin may be derived from the block ID for storage of a correspondingdata block by extracting a predefined number of bits from the blockidentifiers. In some embodiments, the bin may be divided into buckets or“sublists” by extending the predefined number of bits extracted from theblock identifier. A bin identifier may be used to identify a bin withinthe system. The bin identifier may also be used to identify a particularblock service 216 a-q and associated storage device (e.g., SSD). Asublist identifier may identify a sublist with the bin, which may beused to facilitate network transfer (or syncing) of data among blockservices in the event of a failure or crash of the storage node 200.Accordingly, a client can access data using a client address, which iseventually translated into the corresponding unique identifiers thatreference the client's data at the storage node 200.

For each volume 221 hosted by a slice service 220, a list of blockidentifiers may be stored with one block identifier for each logicalblock on the volume. Each volume may be replicated between one or moreslice services 220 and/or storage nodes 200, and the slice services foreach volume may be synchronized between each of the slice serviceshosting that volume. Accordingly, failover protection may be provided incase a slice service 220 fails, such that access to each volume maycontinue during the failure condition.

The above structure allows storing of data evenly across the cluster ofstorage devices (e.g., SSDs), which allows for performance metrics to beused to manage load in the cluster. For example, if the cluster is undera load meeting or exceeding a particular threshold, clients can bethrottled or locked out of a volume by, for example, the storage OS 210reducing the amount of read or write data that is being processed by thestorage node 200.

IOPS Pushback

FIG. 13 is a graph illustrating IOPS push back 1300 in accordance withan embodiment of the present disclosure. In one embodiment, the IOPSpushback 1300 is performed according to an SS Load calculationdetermined by a system metric monitoring module (e.g., system metricmonitoring module 213) for a given slice service (e.g., slice service220 a). In various embodiments, SS load generally represents a valueindicative of a load on the given slice service on a scale of 0-100.Depending upon the particular implementation, SS load may be employed invarious of the calculations described herein to determine whether thevolumes on a given storage node have the performance capacity to do morethan they currently are, without overloading the given node.

As shown in the present example, when the SS Load value is within afirst range (e.g., between 0 and 37, inclusive), the storage OS (e.g.,storage OS 210) does not throttle the volumes residing on the particularslice service. When the SS Load value is within a second range (e.g.,between 38-59, inclusive), the storage OS may throttle multiple volumes(e.g., all of volumes 212 a-212 x) residing on the particular sliceservice linearly from the maximum IOPS value 1320 (e.g., 4,000 IOPS) tothe minimum IOPS value 1310 (e.g., 1,000 IOPS) based on the client QoSsettings. If, instead, the SS Load value is within a third range (e.g.,between 60-100, inclusive), the storage OS may throttle multiple volumes(e.g., all volumes 212 a-212 x) residing on the particular slice serviceusing an inverse exponential function towards 0. Accordingly, if theuser misconfigures the client QoS settings for the volumes, a sliceservice may be unnecessarily slow when responding to client requests. Itshould be understood that the above ranges are provided as examples andmay vary in other examples.

Examples of Automated Tuning of QoS Settings

FIG. 3 is a flow diagram illustrating a set of operations forautomatically increasing QoS settings in accordance with an embodimentof the present disclosure. The various blocks of the flow diagrams ofFIGS. 3-11 may be executed by a computing device (e.g., a processor,processing circuit, and/or other suitable component, for example, of astorage node (e.g., storage node 200)). In the context of variousexamples, the automatic tuning (e.g., increasing or decreasing) of QoSsettings is described with reference to a QoS tuning module (e.g., QoStuning module 215) implemented within a storage node representing acluster master.

At decision block 310, it is determined whether a predetermined eventhas occurred. If so, processing continues with block 320; otherwise,processing loops back to decision block 310. In the context of thepresent example, the predetermined event represents any of a number oftriggering events the occurrence of which may be used to cause QoSsettings to be evaluated. Depending upon the particular implementation,the predetermined event may represent one or a combination of expirationof a timer (e.g., X minutes, Y hours, or Z days), a system metriccrossing a threshold, a workload characteristic crossing a threshold, ora request by a client.

At block 320, a volume of multiple volumes utilized by a client isidentified. For example, via a command line interface (CLI), anadministrator-level command (e.g., nfs connected-clients show-node<nodename>) may be used to obtain information regarding which clientsare attached to which volumes for a particular storage node.

At block 330, a difference between a first QoS setting assigned to thevolume and a second QoS setting assigned to the volume is determined.For each volume used by the client, the client may set the first and/orsecond QoS settings of the respective volume. At a later point in time,the client may change the first and/or second QoS settings of thevolume.

At decision block 340, a determination is made regarding whether thedifference is less than a threshold. If so, then processing branches toblock 350; otherwise, processing continues with decision block 370. Inan example, the threshold is fifty IOPS (as just one non-limitingexample of a numeric value), and it is determined whether the differencebetween the first and second QoS settings is less than the threshold offifty IOPS. The larger the difference, the larger the range between thefirst and second QoS settings. The smaller the difference, the smallerthe range between the first and second QoS settings.

At block 350, a new value for a third QoS setting is determined that isgreater than the current value of the third QoS setting. For purposes ofgenerality, it is noted the third QoS setting may be the same as ordifferent from the first and/or second QoS setting. Depending upon theparticular implementation, the current value of the third QoS settingmay be increased by a constant factor or by a dynamic factor dependentupon the range between the first and second QoS settings. For example,the size of the dynamic factor may be directly related to the size ofthe range, thereby increasing the current value of the third QoS settingmore when the first and second QoS settings are further apart than whenthey are closer apart. For example, assuming a minimum IOPS parameter(minIOPS) value of 50, a maximum IOPS parameter (maxIOPS) value of15000, and a burst IOPS parameter (burstIOPS) value of 15000, burstIOPSmay be increased by a percentage (e.g., 10%) of the range betweenminIOPS and maxIOPS. In some examples, the percentage may beconfigurable to allow an administrative user of the distributed storagesystem to make the auto-adjustments more or less aggressive. In oneembodiment, the QoS tuning module may restore a default setting for thethird QoS setting of the volume if the default is higher than thecurrent setting for the third QoS setting.

At block 360, the new value of the third QoS setting is applied to thevolume for the client. For example, the QoS tuning module 215 may storethe new value to a centralized service so as to facilitate access to thenew value and application of the new value of the third QoS setting tothe volume for the client by a QoS module (e.g., QoS module 211) of thestorage node of the cluster (e.g., cluster 135) running a slice service220 including the volume at issue.

At decision block 370, a determination is made regarding whether anothervolume is to be processed. If so, processing loops back to block 320where another volume utilized by the client is identified; otherwise,processing for the volumes utilized by the client is complete. Accordingto one embodiment, all volumes or a subset of all volumes for a clientmay be processed.

In one embodiment, the first QoS setting may represent the maximum IOPSsetting of the volume, the second QoS setting may represent the minimumIOPS setting of the volume, and the third QoS setting may represent theburst IOPS setting. For example, it may be desirable to increase a valueof the burst IOPS setting of the volume to allow the volume to performbeyond its regular maximum IOPS setting for a longer period of time thanwould have otherwise been allowed with a non-adjusted burst IOPSsetting. A non-limiting example of the specific application of thegeneralized approach of FIG. 3 with respect to increasing the burst IOPSsetting for a particular volume based on the current maximum IOPS andthe current minimum IOPS settings of the particular volume is describedfurther below with reference to FIG. 5 .

In one embodiment, the first QoS setting may represent the burst IOPSsetting of the volume, the second QoS setting may represent the maximumIOPS setting of the volume, and the third QoS setting may represent theburst IOPS setting. For example, it may be desirable to increase a valueof the burst IOPS setting of the volume to allow the volume to performbeyond its regular maximum IOPS setting for a longer period of time thanwould have otherwise been allowed with a non-adjusted burst IOPSsetting. A non-limiting example of the specific application of thegeneralized approach of FIG. 3 with respect to increasing the burst IOPSsetting for a particular volume based on the current burst IOPS and thecurrent maximum IOPS settings for the particular volume is describedfurther below with reference to FIG. 6 .

The QoS tuning module may execute the various processed described hereinwith reference to FIGS. 3-11 based on various mechanisms. For example,the QoS tuning module may perform the respective processes periodically(e.g., every 15 minutes), based on a client request, based on detectinga potential performance degradation in the cluster, based on detectingthat the client has created X volumes, and/or based on detecting thatthe client has deleted Y volumes, where X and Y are numbers greater thanzero. Additionally, the QoS tuning module may execute the respectiveprocessed for one or more clients. It is to be noted the variousautomated QoS settings tunning approaches described herein withreference to FIGS. 3-11 should not be considered mutually exclusive. Assuch, the QoS tuning module may The QoS tuning module may execute any orall of such approaches, after, during, or independent of each otherbased on one or more of the various triggering mechanisms describedherein.

While in the context of the present example and in the context ofsubsequent flow diagrams, a number of enumerated blocks are included, itis to be understood that embodiments may include additional blocksbefore, after, and/or in between the enumerated blocks. Similarly, insome embodiments, one or more of the enumerated blocks may be omitted orperformed in a different order.

FIG. 4 is a flow diagram illustrating a set of operations forautomatically decreasing QoS settings of a volume in accordance with anembodiment of the present disclosure. At decision block 410, it isdetermined whether a predetermined event has occurred. If so, processingcontinues with block 420; otherwise, processing loops back to decisionblock 410. Depending upon the particular implementation, thepredetermined event may represent expiration of a timer (e.g., Xminutes, Y hours, or Z days), a system metric crossing a threshold, aworkload characteristic crossing a threshold, or a request by a client.

At block 420, a set of volume of multiple volumes utilized by a clientis determined in which each volume satisfies a first QoS setting and asecond QoS setting assigned to the volume.

At block 430, a subset of the set of volumes is determined in which eachvolume of the subset satisfies an upper bound of a range for the firstQoS setting of the volume.

At block 440, for one or more volumes of the subset of volumes, a newvalue is determined for the first QoS setting and the new value for thefirst QoS setting is applied to the volume for the client. Dependingupon the particular implementation, the current value of the first QoSsetting may be decreased by a constant factor or by a dynamic factordependent upon the difference between the first QoS setting and theupper bound. For example, the size of the dynamic factor may beinversely related to the size of the range, thereby decreasing thecurrent value of the first QoS setting more when the first QoS settingis further from the upper bound than when they are closer together. Asnoted above, in some examples, the constant or dynamic factor may beconfigurable to allow an administrative user of the distributed storagesystem to make the auto-adjustments more or less aggressive. In oneembodiment, the QoS tuning module may restore a default setting for thefirst QoS setting of the volume if the default is lower than the currentvalue of the first QoS setting.

In one embodiment, the first QoS setting may represent the minimum IOPSsetting of the volume, and the second QoS setting may represent themaximum IOPS setting of the volume. For example, in relation to block420, a volume may satisfy the first QoS setting and the second QoSsetting when the volume has not exceeded the minimum IOPS setting of thevolume within a time window and has not exceeded the maximum IOPSsetting of the volume within the time window. In relation to block 430,a volume of the subset may satisfy an upper bound of a range based onthe minimum IOPS setting when the volume does not exceed the upper boundof a range between zero and the minimum IOPS setting during the timewindow. For example, a subset of the volumes may be determined, whereeach volume of the subset does not exceed an upper bound of abelow-minimum during the time window. A non-limiting example of thespecific application of the generalized approach of FIG. 4 with respectto decreasing the minimum IOPS setting for a particular volume isdescribed further below with reference to FIG. 7 .

In one embodiment, the first QoS setting may represent the maximum IOPSsetting of the volume, and the second QoS setting may represent theminimum IOPS setting of the volume. For example, in relation to blocks420, a volume may satisfy the first QoS setting and the second QoSsetting when the maximum IOPS setting of the volume is greater than afirst threshold and the minimum IOPS setting of the volume is less thana second threshold. In relation to the block 430, a volume of the subsetmay satisfy an upper bound of a range based on the minimum IOPS settingwhen the volume does not exceed the upper bound of a range between theminimum IOPS setting and the maximum IOPS setting during the timewindow. For example, a subset of the volumes may be determined, whereeach volume of the subset does not exceed an upper bound of aminimum-to-maximum range during the time window. A non-limiting exampleof the specific application of the generalized approach of FIG. 4 withrespect to decreasing the maximum IOPS setting for a particular volumeis described further below with reference to FIG. 8 .

In some examples, the minimum and maximum IOPS settings of a volume maybe set too close together. In such examples, it may be desirable toincrease the burst IOPS setting of the volume to allow the volume tohandle sharp spikes in I/O for a short period of time. A non-limitingexample of an automated approach for determining whether and how toincrease the burst IOPS settings of volumes is described below withreference to FIG. 5 .

FIG. 5 is a flow diagram illustrating a set of operations forautomatically increasing burst IOPS settings of a volume based onminimum and maximum IOPS settings of the volume being too closertogether in accordance with an embodiment of the present disclosure. Atdecision block 510, it is determined whether a predetermined event hasoccurred. If so, processing continues with block 520; otherwise,processing loops back to decision block 510. Depending upon theparticular implementation, the predetermined event may representexpiration of a timer (e.g., X minutes, Y hours, or Z days), a systemmetric crossing a threshold, a workload characteristic crossing athreshold, or a request by a client. At block 520, a volume of amultiple of volumes utilized by a client is identified.

At block 530, a difference between a maximum IOPS setting assigned tothe volume and a minimum IOPS setting assigned to the volume for theclient is determined. For each volume used by the client, the client mayset the minimum IOPS setting and/or the maximum IOPS setting of thevolume. At a later point in time, the client may change the minimum IOPSsetting and/or the maximum IOPS setting of the volume. The minimum IOPSvalue should be less than the maximum IOPS and may guarantee performanceregardless of system conditions or application activity. The maximumIOPS setting value may refer to the maximum IOPS that a volume canprocess over a sustained period of time. The larger the difference, thelarger the range between the maximum IOPS setting and the minimum IOPSsetting. The smaller the difference, the smaller the range between themaximum IOPS setting and the minimum IOPS setting. When the differencebetween the maximum IOPS setting and the minimum IOPS setting is toosmall (e.g., less than a configurable or predefined threshold), thesystem's performance may degrade if, for example, a volume experiences aspike in demand well above the minimum IOPS setting of the volume.

At decision block 540, a determination is made regarding whether thedifference is less than a threshold. If so, then processing branches toblock 550; otherwise, processing continues with decision block 570. Inan example, the threshold is fifty IOPS (as just one non-limitingexample of a numeric value), and it is determined whether the differencebetween the maximum IOPS setting and the minimum IOPS setting is lessthan the threshold of fifty IOPS. The QoS tuning module (e.g., QoStuning module 215) may determine that if the difference is less than thethreshold, the distributed storage system (e.g., cluster 135) is likelyto experience performance degradation. To mitigate the performancedegradation, it may be desirable to increase a value of the burst IOPSsetting of the volume to allow the volume to perform beyond its regularmaximum IOPS setting for a longer period of time than would haveotherwise been allowed with a non-adjusted burst IOPS setting. As notedabove, burst IOPS credits may be accrued when the volume has beenperforming at fewer than the maximum IOPS value for an extended amountof time. For example, a volume may accrue one burst IOPS credit for eachunit of time (e.g., 1 second) the volume performs under the maximum IOPSvalue, and the volume may spend or use one burst IOPS credit for eachunit of time the volume operates above the maximum IOPS value. A volumemay accrue a maximum number of burst IOPS credits (e.g., sixty burstIOPS credits).

In one embodiment, the QoS tuning module may perform additional oralternative actions to determine whether to update the burst IOPSsetting. For example, the QoS tuning module may determine whether therespective volume is idle. When the QoS tuning module determines thevolume is idle, then the QoS tuning module may determine to not triggeran update to the current value of the burst IOPS setting and proceedwith decision block 570. In another embodiment, the QoS tuning modulemay determine whether the maximum IOPS setting and/or the minimum IOPSsetting are intentionally set to their respective values. When the QoStuning module determines the maximum IOPS setting and/or the minimumIOPS setting are intentionally set to their respective values, the QoStuning module may determine to not trigger an update to the currentvalue of the burst IOPS setting and proceed with decision block 570.

At block 550, a new value for the burst IOPS setting is determined thatis greater than the current value of the burst IOPS setting. Dependingupon the particular implementation, the current value of the burst IOPSsetting may be increased by a constant factor or by a dynamic factordependent upon the range between the maximum and minimum IOPS settings.For example, the size of the dynamic factor may be directly related tothe size of the range, thereby increasing the current value of the burstIOPS setting more when the maximum and minimum IOPS settings are furtherapart together than when they are closer together. As noted above, insome examples, the constant or dynamic factor may be configurable toallow an administrative user of the distributed storage system to makethe auto-adjustments more or less aggressive. In one embodiment, the QoStuning module may restore a default setting for the burst IOPS settingof the volume if the default is higher than the current value of theburst IOPS setting.

At block 560, the new value of the burst IOPS setting is applied to thevolume for the client. For example, the QoS tuning module may store thenew value to a centralized service so as to facilitate access to the newvalue and application of the new value of the burst IOPS setting to thevolume for the client by a QoS module (e.g., QoS module 211) of thestorage node of the cluster running a slice service 220 including thevolume at issue.

At decision block 570, a determination is made regarding whether anothervolume is to be processed. If so, processing loops back to block 520where another volume utilized by the client is identified; otherwise,processing for the volumes utilized by the client is complete. Accordingto one embodiment, all volumes or a subset of all volumes for a clientmay be processed. When decision block 570 is entered as a result of theno branch of decision block 540, the difference between the maximum IOPSsetting and the minimum IOPS setting is not less than the threshold,indicating the minimum and maximum IOPS settings are far enough apart,potentially resulting in no or less performance degradation based onthese current QoS settings than would result if such QoS settings werechanged.

In addition to examples in which the minimum and maximum IOPS settingsmay be too close together, in some other examples the maximum IOPS andthe burst IOPS settings of a volume may be set too close together. Insuch examples, it may again be desirable to increase the burst IOPSsetting of the volume to allow the volume to handle sharp spikes in I/Ofor a short period of time. A non-limiting example of an automatedapproach for determining whether and how to increase the burst IOPSsettings of volumes is described below with reference to FIG. 6 .

FIG. 6 is a flow diagram illustrating a set of operations forautomatically increasing burst IOPS settings of a volume based onmaximum and burst IOPS settings of the volume being too close togetherin accordance with an embodiment of the present disclosure. At decisionblock 610, it is determined whether a predetermined event has occurred.If so, processing continues with block 620; otherwise, processing loopsback to decision block 610. Depending upon the particularimplementation, the predetermined event may represent expiration of atimer (e.g., X minutes, Y hours, or Z days), a system metric crossing athreshold, a workload characteristic crossing a threshold, or a requestby a client. At block 620, a volume of a multiple of volumes utilized bya client is identified.

At block 630, a difference between a burst IOPS setting and a maximumIOPS setting assigned to the volume for the client is determined. Foreach volume used by the client, the client may set the burst IOPSsetting and/or the maximum IOPS setting of the volume. At a later pointin time, the client may change the burst IOPS setting and/or the maximumIOPS setting of the volume. When the difference between the burst IOPSsetting and the maximum IOPS setting is too small (e.g., less than aconfigurable or predefined threshold), the system's performance maydegrade if, for example, a volume experiences a spike in demand wellabove the maximum IOPS setting of the volume.

At decision block 640, a determination is made regarding whether thedifference is less than a threshold. If so, then processing branches toblock 650; otherwise, processing continues with decision block 670. Inan example, the threshold is fifty IOPS (as just one non-limitingexample of a numeric value), and it is determined whether the differencebetween the burst IOPS setting and the maximum IOPS setting is less thanthe threshold of fifty IOPS. The QoS tuning module (e.g., QoS tuningmodule 215) may determine that if the difference is less than thethreshold, the distributed storage system (e.g., cluster 135) is likelyto experience performance degradation. To mitigate the performancedegradation, it may be desirable to increase a value of the burst IOPSsetting of the volume to allow the volume to perform beyond its regularmaximum IOPS setting for a longer period of time than would haveotherwise been allowed with a non-adjusted burst IOPS setting.

In one embodiments, the QoS tuning module may perform additional oralternative actions to determine whether to update the burst IOPSsetting. For example, the QoS tuning module may determine whether therespective volume is idle. When the QoS tuning module determines thevolume is idle, then the QoS tuning module may determine to not triggeran update to the current value of the burst IOPS setting and proceedwith decision block 670. In another embodiment, the QoS tuning modulemay determine whether the maximum IOPS setting and/or the burst IOPSsetting are intentionally set to their respective values. When the QoStuning module determines the maximum IOPS setting and/or the burst IOPSsetting are intentionally set to their respective values, the QoS tuningmodule may determine to not trigger an update to the current value ofthe burst IOPS setting and proceed with decision block 670.

At block 870, a new value for the maximum IOPS setting is determinedthat is lower than the current value of the maximum IOPS setting.Depending upon the particular implementation, the current value of theburst IOPS setting may be increased by a constant factor or by a dynamicfactor dependent upon the range between the maximum and minimum IOPSsettings. For example, the size of the dynamic factor may be inverselyrelated to the size of the range, thereby increasing the current valueof the burst IOPS setting more when the maximum and minimum IOPSsettings are closer together than when they are further apart. As notedabove, in some examples, the constant or dynamic factor may beconfigurable to allow an administrative user of the distributed storagesystem to make the auto-adjustments more or less aggressive. In oneembodiment, the QoS tuning module may restore a default setting for themaximum IOPS setting of the volume if the default is less than thecurrent value of the maximum IOPS setting.

At block 660, the new value of the burst IOPS setting is applied to thevolume for the client. For example, the QoS tuning module may store thenew value to a centralized service so as to facilitate access to the newvalue and application of the new value of the maximum IOPS setting tothe volume for the client by a QoS module (e.g., QoS module 211) of thestorage node of the cluster running a slice service 220 including thevolume at issue.

At decision block 670, a determination is made regarding whether anothervolume is to be processed. If so, processing loops back to block 620where another volume utilized by the client is identified; otherwise,processing for the volumes utilized by the client is complete. Accordingto one embodiment, all volumes or a subset of all volumes for a clientmay be processed. When decision block 670 is entered as a result of theno branch of decision block 640, the difference between the burst IOPSsetting and the maximum IOPS setting is not less than the threshold,indicating the burst and maximum IOPS settings are far enough apart,potentially resulting in no or less performance degradation based onthese current QoS settings than would result if such QoS settings werechanged.

In some examples, the minimum IOPS setting of a volume may be set toohigh (e.g., the volume rarely processes enough IOPS operations to reachthe minimum IOPS setting) for the volume's workloads. When the minimumIOPS setting of a volume is set too high, then too much I/O may beallocated from other volumes to a volume that does not need it. In suchexamples, it may be desirable to decrease the minimum IOPS setting ofthe volume. A non-limiting example of an automated approach fordetermining whether and how to decrease the minimum IOPS settings ofvolumes is described below with reference to FIG. 7 .

FIG. 7 is a flow diagram illustrating a set of operations forautomatically decreasing minimum IOPS settings of a volume in accordancewith an embodiment of the present disclosure. At decision block 710, itis determined whether a predetermined event has occurred. If so,processing continues with block 720; otherwise, processing loops back todecision block 710. Depending upon the particular implementation, thepredetermined event may represent expiration of a timer (e.g., Xminutes, Y hours, or Z days), a system metric crossing a threshold, aworkload characteristic crossing a threshold, or a request by a client.At block 720, a volume of a multiple of volumes utilized by a client isidentified.

At decision block 730, a determination is made regarding whether thevolume has exceeded a minimum IOPS setting of the volume within a timewindow. A volume has exceeded the minimum IOPS setting within the timewindow when any workload processed on the volume has exceeded theminimum IOPS setting within the time window. In some examples, the QoStuning module may receive below-minimum data from the QoS module (e.g.,QoS module 211). The below-minimum data may include including QoSmetrics that track a number of observations in which the volume isoperating at below the minimum IOPS setting of the volume during thetime window. For example, if the minimum IOPS setting is set to 1,000IOPS (as just one non-limiting example of a numeric value), then thebelow-minimum data may include a count indicative of the amount of timein which the volume is operating at below 1,000 IOPS within the timewindow. The QoS tuning module may determine a below-minimum range thatis between zero and the minimum IOPS setting, and the below-minimumrange may be further partitioned into subranges, with each below-minimumsubrange covering a distribution of values. In an example (for purposesof illustration only), the below-minimum range may be partitioned intoquintiles, and the QoS tuning module may determine a first below-minimumsubrange including 0 to 199 IOPS (e.g., a first quintile), a secondbelow-minimum subrange including 200 to 399 IOPS (e.g., a secondquintile), a third below-minimum subrange including 400 to 599 IOPS(e.g., a third quintile), a fourth below-minimum subrange including 600to 799 IOPS (e.g., a fourth quintile), and a fifth below-minimumsubrange including 800 to 999 IOPS (e.g., a fifth quintile).

The first below-minimum subrange may include a count of the amount oftime in which the volume is operating between 0 and 199 IOPS within thetime window. The second below-minimum subrange may include a count ofthe amount of time in which the volume is operating between 200 and 399IOPS within the time window. The third below-minimum subrange mayinclude a count of the amount of time in which the volume is operatingbetween 400 and 599 IOPS within the time window. The fourthbelow-minimum subrange may include a count of the amount of time inwhich the volume is operating between 600 and 799 IOPS within the timewindow. The fifth below-minimum subrange may include a count of theamount of time in which the volume is operating between 800 and 999 IOPSwithin the time window.

In some examples, the QoS tuning module may additionally receiveminimum-to-maximum data from the QoS module. The minimum-to-maximum datamay include a number of observations in which the volume is operatingbetween the minimum IOPS setting and the maximum IOPS setting of thevolume during the time window. For example, if the minimum IOPS settingis set to 1,000 IOPS and the maximum IOPS setting is set to 25,000 IOPS(for purposes of illustration only), then the minimum-to-maximum datamay include a count indicative of the amount of time in which the volumeis operating between 1,000 and 25,000 IOPS within the time window. TheQoS tuning module may determine a minimum-to-maximum range that isbetween the minimum IOPS setting (e.g., 1,000 IOPS) and the maximum IOPSsetting (e.g., 25,000 IOPS), and the minimum-to-maximum may be furtherpartitioned into subranges, with each minimum-to-maximum subrangecovering a distribution of values. The minimum-to-maximum range may befurther partitioned to determine how effective the minimum and maximumIOPS settings are relative to the volume's workload(s).

In an example, the minimum-to-maximum range may be partitioned intoquintiles, and the QoS tuning module may determine a firstminimum-to-maximum subrange including 1,000 to 5,799 IOPS (e.g., a firstquintile), a second minimum-to-maximum subrange including 5,800 to10,599 IOPS (e.g., a second quintile), a third minimum-to-maximumsubrange including 10,600 to 15,399 IOPS (e.g., a third quintile), afourth minimum-to-maximum subrange including 15,400 to 20,199 IOPS(e.g., a fourth quintile), and a fifth minimum-to-maximum subrangeincluding 20,200 to 25,000 IOPS (e.g., a fifth quintile).

The first minimum-to-maximum subrange may include a count of the amountof time in which the volume is operating between 1,000 and 5,799 IOPSwithin the time window. The second minimum-to-maximum subrange mayinclude a count of the amount of time in which the volume is operatingbetween 5,800 and 10,599 IOPS within the time window. The thirdminimum-to-maximum subrange may include a count of the amount of time inwhich the volume is operating between 10,600 and 15,399 IOPS within thetime window. The fourth minimum-to-maximum subrange may include a countof the amount of time in which the volume is operating between 15,400and 20,199 IOPS within the time window. The fifth minimum-to-maximumsubrange may include a count of the amount of time in which the volumeis operating between 20,200 and 25,000 IOPS within the time window.

When the volume has observations within the first to fifthminimum-to-maximum subranges (i.e. the first to fifth quintiles) duringthe time window, then the QoS tuning module may determine the volume hasexceeded the minimum IOPS setting of the volume within the time window.Although the distribution of data may be discussed in relation toquintiles in this example, other examples may have different datadistributions (e.g., quartiles, etc.). When the volume has exceeded theminimum IOPS setting of the volume within the time window, then it maybe likely that the volume will operate at least at or beyond the minimumIOPS setting. Accordingly, it may be undesirable to decrease the minimumIOPS setting of the volume. In this instance, processing branches todecision block 780.

In contrast, if the volume has not exceeded the minimum IOPS setting ofthe volume within the time window, then it may be unlikely that thevolume will operate at least at or beyond the minimum IOPS setting.Accordingly, it may be likely that the minimum IOPS setting of thevolume can be decreased without degrading system performance In thisinstance, processing continues with decision block 740.

At decision block 740, a determination is made regarding whether thevolume has exceeded an upper bound of a range between zero and theminimum IOPS setting during the time window. The QoS tuning module maydetermine the upper bound, which may be a number or a percentage of thedistribution of below-minimum data. In keeping with the above example inwhich the below-minimum range is partitioned into quintiles, the upperbound may be 600 IOPS and accordingly include observations in which thevolume is operating at 600 to 999 IOPS or may be the fourth quintile ofthe below-minimum range and accordingly include observations in whichthe volume is operating at the fourth or fifth quintile of thebelow-minimum range.

When the volume has exceeded the upper bound of the range between zeroand the minimum IOPS setting during the time window, then the volume maybe operating closer to the minimum IOPS setting and it may be likelythat the volume will operate at least at or beyond the minimum IOPSsetting. Accordingly, it may be undesirable to decrease the minimum IOPSsetting of the volume. In this instance, processing continues withdecision block 780.

In contrast, still with respect to decision block 740, when the volumehas not exceeded the upper bound of the range between zero and theminimum IOPS setting during the time window, then the volume may beoperating well below the minimum IOPS setting and it may be desirable todecrease the minimum IOPS setting of the volume. For example, the volumemay be operating at least at sixty percent below the minimum IOPSsetting of the volume within the time window, and all observations inwhich the volume is operating below the minimum IOPS setting within thetime window fall within the first, second, or third below-minimumsubranges. In this example, the QoS tuning module may determine that thevolume is consistently operating at least at sixty percent below theminimum IOPS setting within the time window. If the volume has notexceeded the upper bound of the range between zero and the minimum IOPSsetting during the time window, processing may branch to decision block750.

At decision block 750, a determination is made regarding whether theminimum IOPS setting is set to a minimum threshold. The minimumthreshold may represent the lowest IOPS value that the volume should beset to for the minimum IOPS setting. If the minimum IOPS setting is setat the minimum threshold, it may be undesirable to further decrease theminimum IOPS setting. In this instance, processing may branch todecision block 780. In contrast, if the minimum IOPS setting is not setat the minimum threshold, it may be desirable to further decrease theminimum IOPS setting because the volume rarely processes workloads thatrequire the minimum IOPS value. In this instance, processing maycontinue with block 760.

At block 760, a new value for the minimum IOPS setting is determinedthat is less than the current value of the minimum IOPS setting. In someexamples, the QoS tuning module may select an IOPS value below the upperbound of the range between zero and the minimum IOPS setting of thevolume. Depending upon the particular implementation, the current valueof the minimum IOPS setting may be decreased by a constant factor or bya dynamic factor dependent upon a difference between a peak IOPSobservation and the upper bound. For example, the size of the dynamicfactor may be directly related to the difference, thereby decreasing thecurrent value of the minimum IOPS setting more when the upper bound andthe peak IOPS observation are further apart than when they are closertogether. As noted above, in some examples, the constant or dynamicfactor may be configurable to allow an administrative user of thedistributed storage system to make the auto-adjustments more or lessaggressive. In one embodiment, the QoS tuning module may restore adefault setting for the minimum IOPS setting of the volume if thedefault is less than the current value of the minimum IOPS setting.Alternatively, the QoS tuning module may select the minimum thresholdvalue as the new value.

At block 760, the new value of the minimum IOPS setting is applied tothe volume for the client. For example, the QoS tuning module may storethe new value to a centralized service so as to facilitate access to thenew value and application of the new value of the minimum IOPS settingto the volume for the client by a QoS module (e.g., QoS module 211) ofthe storage node of the cluster running a slice service 220 includingthe volume at issue.

At decision block 780, a determination is made regarding whether anothervolume is to be processed. If so, processing loops back to block 720where another volume utilized by the client is identified; otherwise,processing for the volumes utilized by the client is complete. Accordingto one embodiment, all volumes or a subset of all volumes for a clientmay be processed.

In some other examples, the maximum IOPS setting of a volume may be settoo high (e.g., the volume rarely processes IOPS operations close to (orwithin a threshold of) the maximum IOPS setting) for the volume'sworkloads. In such examples, it may be desirable to decrease the maximumIOPS setting of the volume. A non-limiting example of an automatedapproach for determining whether and how to decrease the maximum IOPSsettings of volumes is described below with reference to FIG. 8 .

FIG. 8 is a flow diagram illustrating a set of operations forautomatically decreasing maximum IOPS settings of a volume in accordancewith an embodiment of the present disclosure. At decision block 810, itis determined whether a predetermined event has occurred. If so,processing continues with block 820; otherwise, processing loops back todecision block 810. Depending upon the particular implementation, thepredetermined event may represent expiration of a timer (e.g., Xminutes, Y hours, or Z days), a system metric crossing a threshold, aworkload characteristic crossing a threshold, or a request by a client.At block 820, a volume of a multiple of volumes utilized by a client isidentified.

At decision block 830, a determination is made regarding whether amaximum IOPS setting of the volume is greater than a first threshold. Ifso, then processing continues with decision block 840; otherwise,processing branches to decision block 890.

At decision block 840, a determination is made regarding whether aminimum IOPS setting of the volume is less than a second threshold. Ifso, then processing branches to block 850; otherwise, processingcontinues with decision block 890.

At block 850, a range is determined between the minimum IOPS setting andthe maximum IOPS setting of the volume. In an example, the QoS tuningmodule may determine a minimum-to-maximum range between the minimum IOPSsetting and the maximum IOPS setting.

At decision block 860, a determination is made regarding whether thevolume has exceeded an upper bound of the range (e.g.,minimum-to-maximum range) during a time window.

In relation to block 850 and decision block 860 and using the aboveexample discussed with reference to FIG. 7 (for purposes of illustrationonly) in which the minimum IOPS setting is set to 1,000 IOPS and themaximum IOPS setting is set to 25,000 IOPS, the QoS tuning module maydetermine that the range in block 850 is 1,000 IOPS to 25,000 IOPS. TheQoS tuning module may determine the upper bound, which may be a numberor a percentage of the distribution of minimum-to-maximum data. Inkeeping with the above example in which the minimum-to-maximum range ispartitioned into quintiles, the upper bound may be 10,600 IOPS andaccordingly include observations in which the volume is operating at10,600 to 25,000 IOPS or may be the third quintile of theminimum-to-maximum range and may accordingly include observations inwhich the volume is operating at the third, fourth, or fifth quintile ofthe minimum-to-maximum range.

If the volume has exceeded the upper bound of the range between theminimum IOPS setting and the maximum IOPS setting during the timewindow, then the volume may be operating closer to the maximum IOPSsetting and it may be likely that the volume will operate at least at orbeyond the maximum IOPS setting. Accordingly, it may be undesirable todecrease the maximum IOPS setting of the volume. In this instance,processing branches to decision block 890.

In contrast, if the volume has not exceeded the upper bound of the rangebetween the minimum IOPS setting and the maximum IOPS setting during thetime window, then the volume may be operating well below the maximumIOPS setting and it may be desirable to decrease the maximum IOPSsetting of the volume. In this example, all observations in which thevolume is operating within the time window fall within the first orsecond minimum-to-maximum subranges. If the volume has not exceeded theupper bound of the range between the minimum IOPS setting and themaximum IOPS setting during the time window, processing continues withblock 870.

At block 870, a new value for the maximum IOPS setting is determinedthat is less than the current value of the maximum IOPS setting.Depending upon the particular implementation, the current value of themaximum IOPS setting may be decreased by a constant factor or by adynamic factor dependent upon a difference between a peak IOPSobservation and the upper bound. For example, the size of the dynamicfactor may be directly related to the difference, thereby decreasing thecurrent value of the maximum IOPS setting more when the upper bound andthe peak IOPS observation are further apart than when they are closertogether. As noted above, in some examples, the constant or dynamicfactor may be configurable to allow an administrative user of thedistributed storage system to make the auto-adjustments more or lessaggressive. In one embodiment, the QoS tuning module may restore adefault setting for the maximum IOPS setting of the volume if thedefault is lower than the current value of the maximum IOPS setting.

At block 880, the new value of the maximum IOPS setting is applied tothe volume for the client. For example, the QoS tuning module may storethe new value to a centralized service so as to facilitate access to thenew value and application of the new value of the maximum IOPS settingto the volume for the client by a QoS module (e.g., QoS module 211) ofthe storage node of the cluster running a slice service 220 includingthe volume at issue.

At decision block 890, a determination is made regarding whether anothervolume is to be processed. If so, processing loops back to block 820where another volume utilized by the client is identified; otherwise,processing for the volumes utilized by the client is complete. Accordingto one embodiment, all volumes or a subset of all volumes for a clientmay be processed.

In some other examples, if the minimum IOPS setting of a volume is settoo low (e.g., the volume typically processes more IOPS operations thanthe minimum IOPS setting), then the volume may be starved of IOPS forworkloads running on the volume. In such examples, it may be desirableto increase the minimum IOPS setting of the volume. A non-limitingexample of an automated approach for determining whether and how toincrease the minimum IOPS settings of volumes is described below withreference to FIG. 9 .

FIG. 9 is a flow diagram illustrating a set of operations forautomatically increasing minimum IOPS settings of a volume in accordancewith an embodiment of the present disclosure. At decision block 910, itis determined whether a predetermined event has occurred. If so,processing continues with block 920; otherwise, processing loops back todecision block 910. Depending upon the particular implementation, thepredetermined event may represent expiration of a timer (e.g., Xminutes, Y hours, or Z days), a system metric crossing a threshold, aworkload characteristic crossing a threshold, or a request by a client.At block 920, a volume of a multiple of volumes utilized by a client isidentified.

At block 930, a first number of observations within a time window inwhich the volume operates at below a minimum IOPS setting of the volumeis determined. In some examples, if the minimum IOPS setting is set to1,000 IOPS (for purposes of illustration only), then the first number ofobservations may include a count indicative of the amount of time inwhich the volume is operating at below 1,000 IOPS within the timewindow.

At block 940, a second number of observations within the time window inwhich the volume operates at a range between the minimum IOPS settingand a maximum IOPS setting of the volume is determined. In someexamples, if the minimum IOPS setting is set to 1,000 IOPS and themaximum IOPS setting is set to 25,000 IOPS (for purposes of illustrationonly), then the second number of observations may include a countindicative of the amount of time in which the volume is operatingbetween the range of 1,000 and 25,000 IOPS within the time window.

At block 950, a third number of observations within the time window inwhich the volume exceeds an upper bound of the range (e.g.,minimum-to-maximum range) and in which the volume exceeds the maximumIOPS setting is determined. Using the above example in FIG. 7 (for sakeof illustration) in which the minimum IOPS setting is set to 1,000 IOPSand the maximum IOPS setting is set to 25,000 IOPS, the QoS tuningmodule may determine that the range is 1,000 IOPS to 25,000 IOPS. TheQoS tuning module may determine the upper bound, which may be a numberor a percentage of the distribution of minimum-to-maximum data.

In keeping with the above example in which the minimum-to-maximum rangeis partitioned into quintiles, the upper bound may be 10,600 IOPS andmay accordingly include a number of observations in which the volume isoperating at 10,600 to 25,000 IOPS or may be the third quintile of theminimum-to-maximum range and accordingly include a number ofobservations in which the volume is operating at the third, fourth, andfifth quintile of the minimum-to-maximum range. Additionally, the volumeexceeds the maximum IOPS setting if the volume is operating above 25,000IOPS. In this example, the third number of observations may include acount indicative of the amount of time in which the volume exceeds theupper bound of the range within the time window (e.g., operating betweenthe range of 10,600 and 25,000 IOPS within the time window) and in whichthe volume exceeds the maximum IOPS setting within the time window.

At block 960, a quotient is determined based on the third number and asum of the first and second numbers. The sum of the first and secondnumbers may represent the total number of observations in which thevolume operates at below the minimum IOPS setting and in which thevolume operates between the minimum IOPS setting and the maximum IOPSsetting. In an example, the QoS tuning module may determine the quotientby dividing the third number by a sum of the first and second numbers.The quotient may indicate a proportion of times in which the volume isoperating at least at, for example, forty percent above the minimum IOPSsetting of the volume.

At decision block 970, a determination is made regarding whether thequotient is greater than a performance threshold. The QoS tuning modulemay determine whether the quotient is greater than a performancethreshold. In an example, the performance threshold is 0.5 and the QoStuning module may determine whether the volume is operating above theupper bound of the range (e.g., the volume is operating at least atforty percent above the minimum IOPS setting of the volume) for greaterthan fifty percent of the sum of the first and second number ofobservations.

If the quotient is not greater than the performance threshold, then theQoS tuning module may determine the volume does not process enough IOPSon a consistent basis to warrant an increase to the minimum IOPS settingof the volume. In this instance, processing may continue with decisionblock 990. In contrast, if the quotient is greater than the performancethreshold, then the QoS tuning module may determine the volume processesenough IOPS on a consistent basis to warrant an increase to the minimumIOPS setting of the volume. For example, the QoS tuning module maydetermine that if the minimum IOPS setting is not increased, the volumemay exceed the minimum IOPS setting, potentially degrading performance.If the quotient is greater than the performance threshold, processingbranches to block 975.

At block 975, a new value for the minimum IOPS setting is determinedthat is greater than the current value of the minimum IOPS setting. Insome examples, the QoS tuning module may select a new value for theminimum IOPS setting that is above the upper bound of the range betweenthe minimum IOPS setting and the maximum IOPS setting Depending upon theparticular implementation, the current value of the minimum IOPS settingmay be increased by a constant factor or by a dynamic factor dependentupon the third number. For example, the size of the dynamic factor maybe directly related to the third number, thereby increasing the currentvalue of the minimum IOPS setting more when the third number isindicative of the volume spending more time operating in excess of theupper bound as compared to when the volume spends less time operating inexcess of the upper bound. As noted above, in some examples, theconstant or dynamic factor may be configurable to allow anadministrative user of the distributed storage system to make theauto-adjustments more or less aggressive. In one embodiment, the QoStuning module may restore a default setting for the minimum IOPS settingof the volume if the default is higher than the current value of theminimum IOPS setting.

At block 980, the new value of the minimum IOPS setting is applied tothe volume for the client. For example, the QoS tuning module may storethe new value to a centralized service so as to facilitate access to thenew value and application of the new value of the minimum IOPS settingto the volume for the client by a QoS module (e.g., QoS module 211) ofthe storage node of the cluster running a slice service 220 includingthe volume at issue.

At decision block 990, a determination is made regarding whether anothervolume is to be processed. If so, processing loops back to block 920where another volume utilized by the client is identified; otherwise,processing for the volumes utilized by the client is complete. Accordingto one embodiment, all volumes or a subset of all volumes for a clientmay be processed.

In some other examples, if the maximum IOPS setting of a volume is settoo low (e.g., the volume typically processes more IOPS operations thanthe maximum IOPS setting) and the volume's workload does not reach theburst IOPS setting assigned to the volume, then the volume may bethrottled along with the volumes on that volume's slice service,resulting in degradation of performance for the entire slice service. Insuch examples, it may be desirable to increase the maximum IOPS settingof the volume. A non-limiting example of an automated approach fordetermining whether and how to increase the maximum IOPS settings ofvolumes is described below with reference to FIG. 10 .

FIG. 10 is a flow diagram illustrating a set of operations forautomatically increasing maximum IOPS settings of a volume in accordancewith an embodiment of the present disclosure. At decision block 1010, itis determined whether a predetermined event has occurred. If so,processing continues with block 1020; otherwise, processing loops backto decision block 1010. Depending upon the particular implementation,the predetermined event may represent expiration of a timer (e.g., Xminutes, Y hours, or Z days), a system metric crossing a threshold, aworkload characteristic crossing a threshold, or a request by a client.At block 1020, a volume of a multiple of volumes utilized by a client isidentified.

At block 1030, a first number of observations within a time window isdetermined in which the volume operates at a range between a minimumIOPS setting and a maximum IOPS setting of the volume. Using the aboveexample (by way of illustration only) in which the minimum IOPS settingmay be set to 1,000 IOPS and the maximum IOPS setting may be set to25,000 IOPS, the QoS tuning module may determine a minimum-to-maximumrange between the minimum IOPS setting of 1,000 IOPS and the maximumIOPS setting of 25,000 IOPS.

As discussed above, if the minimum-to-maximum range is partitioned intofive minimum-to-maximum subranges, with each minimum-to-maximum subrangecovering twenty percent, then the QoS tuning module may determine afirst minimum-to-maximum subrange including 1,000 to 5,799 IOPS (e.g., afirst quintile), a second minimum-to-maximum subrange including 5,800 to10,599 IOPS (e.g., a second quintile), a third minimum-to-maximumsubrange including 10,600 to 15,399 IOPS (e.g., a third quintile), afourth minimum-to-maximum subrange including 15,400 to 20,199 IOPS(e.g., a fourth quintile), and a fifth minimum-to-maximum subrangeincluding 20,200 to 25,000 IOPS (e.g., a fifth quintile). The firstnumber of observations may be a total number of observations in whichthe volume operates between 1,000 IOPS and 25,000 IOPS.

At block 1040, a second number of observations within the time window isdetermined in which the volume is throttled and in which the volume isnot throttled within the time window.

At decision block 1050, a determination is made regarding whether thevolume exceeds an upper bound of the range for at least a firstpercentage threshold of the first number of observations. The QoS tuningmodule may determine the upper bound, which may be a number or apercentage of the distribution of minimum-to-maximum data. In keepingwith the above example in which the minimum-to-maximum range ispartitioned into quintiles, the upper bound may be 20,200 IOPS andaccordingly include observations in which the volume is operating above20,200 IOPS to 25,000 IOPS or may be the fifth quintile of theminimum-to-maximum range and may accordingly include observations inwhich the volume is operating at the fifth quintile of theminimum-to-maximum range. In an example, the first percentage thresholdis twenty percent, and the QoS tuning module may determine whether thevolume falls between 20,200 and 25,000 IOPS for at least twenty percentof the first number of observations within the time window.

If the volume does not exceed the upper bound of the range for at leastthe first percentage threshold of the first number of observations, thenthe volume may not be operating close enough to the maximum IOPS settingfor a sufficient amount of time and it may be unlikely that volume willoperate beyond the maximum IOPS setting. Accordingly, it may beundesirable to increase the maximum IOPS setting of the volume. In thisinstance, processing branches to decision block 1090.

In contrast, if the volume exceeds the upper bound of the range for atleast the first percentage threshold of the first number ofobservations, then the volume may be operating close enough to themaximum IOPS setting for a sufficient amount of time and it may belikely that volume will operate beyond the maximum IOPS setting.Accordingly, it may be desirable to increase the maximum IOPS setting ofthe volume. In this instance, processing continues with decision block1080.

At decision block 1060, a determination is made regarding whether thevolume is throttled for at least a second percentage threshold of thesecond number of observations. For example, the QoS tuning module maydetermine whether the volume is throttled for at least the percentagethreshold of the second number of observations. In an example, thesecond percentage threshold is fifty percent, and the QoS tuning modulemay determine whether the volume is throttled for at least fifty percentof the second number of observations.

If the volume is not throttled for at least the second percentagethreshold of the second number of observations, then the volume may notbe operating above the maximum IOPS setting beyond the burst IOPSsetting for a sufficient amount of time. Accordingly, it may beundesirable to increase the maximum IOPS setting of the volume. In thisinstance, processing continue with decision block 1090. In contrast, ifthe volume is throttled for at least the second percentage threshold ofthe second number of observations, then the volume may experience enoughthrottling to degrade system performance. Accordingly, it may bedesirable to increase the maximum IOPS setting of the volume. In thisinstance, processing branches to block 1070.

At block 1070, a new value for the maximum IOPS setting is determinedthat is greater than the current value of the maximum IOPS setting.Depending upon the particular implementation, the current value of themaximum IOPS setting may be increased by a constant factor or by adynamic factor dependent upon the percentage of time the volume isthrottled. For example, the size of the dynamic factor may be directlyrelated to the percentage of time the volume is throttled during thetime window, thereby increasing the current value of the maximum IOPSsetting more when the volume experiences more throttling as compared towhen the volume experiences less throttling. As noted above, in someexamples, the constant or dynamic factor may be configurable to allow anadministrative user of the distributed storage system to make theauto-adjustments more or less aggressive. In one embodiment, the QoStuning module may restore a default setting for the maximum IOPS settingof the volume if the default is higher than the current value of themaximum IOPS setting.

At block 1080, the new value of the maximum IOPS setting is applied tothe volume for the client. For example, the QoS tuning module may storethe new value to a centralized service so as to facilitate access to thenew value and application of the new value of the maximum IOPS settingto the volume for the client by a QoS module (e.g., QoS module 211) ofthe storage node of the cluster running a slice service 220 includingthe volume at issue.

At decision block 1090, a determination is made regarding whetheranother volume is to be processed. If so, processing loops back to block1020 where another volume utilized by the client is identified;otherwise, processing for the volumes utilized by the client iscomplete. According to one embodiment, all volumes or a subset of allvolumes for a client may be processed.

In some other examples, a volume's IOPS settings may not be allowing forappropriate throttling to take place. If the maximum IOPS setting of avolume is set too high (e.g., the volume operates at significantly lessthat its target IOPS when it is being throttled), then it may bedesirable to decrease the maximum IOPS so as to allow appropriate backpressure to be applied to this volume when the need arises. Target IOPSrefers to a value that may be periodically (e.g., every 500 ms) outputby the QoS modules (e.g., QoS module 211) and representing how hard topush back on (i.e., throttle) volumes. In a sunny day case, with nothrottling, target IOPS for a given volume is the sum of the maximumIOPS setting and the burst IOPS setting for the given volume. In a rainyday scenario, target IOPS is less than the maximum IOPS setting. Anon-limiting example of an automated approach for determining whetherand how to increase the maximum IOPS settings of volumes is describedbelow with reference to FIG. 11 .

FIG. 11 is a flow diagram illustrating a set of operations forautomatically decreasing maximum IOPS settings of a volume based on atarget IOPS setting for the volume in accordance with an embodiment ofthe present disclosure. At decision block 1110, it is determined whethera predetermined event has occurred. If so, processing continues withblock 1120; otherwise, processing loops back to decision block 1110.Depending upon the particular implementation, the predetermined eventmay represent expiration of a timer (e.g., X minutes, Y hours, or Zdays), a system metric crossing a threshold, a workload characteristiccrossing a threshold, or a request by a client. At block 1120, a volumeof a multiple of volumes utilized by a client is identified.

At block 1130, a number of observations within a time window isdetermined in which the volume is throttled.

At decision block 1140, a determination is made regarding whether thevolume operates at lower than a first percentage of its target IOPS forgreater than a second percentage of the number of observations. If so,processing branches to block 1150; otherwise, processing continues withdecision block 1170. In some examples, the determination may involve theQoS tuning module evaluating whether the volume operates at 50% or lessof its target IOPS for 95% or more of the number of observations.

At block 1150, a new value for the maximum IOPS setting is determinedthat is less than the current maximum IOPS. Depending upon theparticular implementation, the current value of the maximum IOPS settingmay be decreased by a constant factor or by a dynamic factor dependentupon a difference between actual percentage of its target IOPS at whichit was observed to operate during the time window and the firstpercentage. For example, the size of the dynamic factor may be directlyrelated to the difference, thereby decreasing the current value of themaximum IOPS setting more when the volume operates at a lower percentageof its target IOPS as compared to when the volume operates at a higherpercentage of its target IOPS when it is being throttled. As notedabove, in some examples, the constant or dynamic factor may beconfigurable to allow an administrative user of the distributed storagesystem to make the auto-adjustments more or less aggressive. In oneembodiment, the QoS tuning module may restore a default setting for themaximum IOPS setting of the volume if the default is lower than thecurrent value of the maximum IOPS setting.

At block 1160, the new value of the maximum IOPS setting is applied tothe volume for the client. For example, the QoS tuning module may storethe new value to a centralized service so as to facilitate access to thenew value and application of the new value of the maximum IOPS settingto the volume for the client by a QoS module (e.g., QoS module 211) ofthe storage node of the cluster running a slice service 220 includingthe volume at issue.

At decision block 1170, a determination is made regarding whetheranother volume is to be processed. If so, processing loops back to block1120 where another volume utilized by the client is identified;otherwise, processing for the volumes utilized by the client iscomplete. According to one embodiment, all volumes or a subset of allvolumes for a client may be processed.

Example Computer System

Embodiments of the present disclosure include various steps, which havebeen described above. The steps may be performed by hardware componentsor may be embodied in machine-executable instructions, which may be usedto cause a processing resource (e.g., a general-purpose orspecial-purpose processor) programmed with the instructions to performthe steps. Alternatively, depending upon the particular implementation,various steps may be performed by a combination of hardware, software,firmware and/or by human operators.

Embodiments of the present disclosure may be provided as a computerprogram product, which may include a non-transitory machine-readablestorage medium embodying thereon instructions, which may be used toprogram a computer (or other electronic devices) to perform a process.The machine-readable medium may include, but is not limited to, fixed(hard) drives, magnetic tape, floppy diskettes, optical disks, compactdisc read-only memories (CD-ROMs), and magneto-optical disks,semiconductor memories, such as ROMs, PROMs, random access memories(RAMs), programmable read-only memories (PROMs), erasable PROMs(EPROMs), electrically erasable PROMs (EEPROMs), flash memory, magneticor optical cards, or other type of media/machine-readable mediumsuitable for storing electronic instructions (e.g., computer programmingcode, such as software or firmware).

Various methods described herein may be practiced by combining one ormore non-transitory machine-readable storage media containing the codeaccording to embodiments of the present disclosure with appropriatespecial purpose or standard computer hardware to execute the codecontained therein. An apparatus for practicing various embodiments ofthe present disclosure may involve one or more computers (e.g., physicaland/or virtual servers) (or one or more processors within a singlecomputer) and storage systems containing or having network access tocomputer program(s) coded in accordance with various methods describedherein, and the method steps associated with embodiments of the presentdisclosure may be accomplished by modules, routines, subroutines, orsubparts of a computer program product.

FIG. 12 is a block diagram that illustrates a computer system 1200 inwhich or with which an embodiment of the present disclosure may beimplemented. Computer system 1200 may be representative of all or aportion of the computing resources associated with a storage node (e.g.,storage node 136), a collector (e.g., collector 138), a monitoringsystem (e.g., monitoring system 122) or an administrative work stationor client (e.g., computer system 110). Notably, components of computersystem 1200 described herein are meant only to exemplify variouspossibilities. In no way should example computer system 1200 limit thescope of the present disclosure. In the context of the present example,computer system 1200 includes a bus 1202 or other communicationmechanism for communicating information, and a processing resource(e.g., a hardware processor 1204) coupled with bus 1202 for processinginformation. Hardware processor 1204 may be, for example, a generalpurpose microprocessor.

Computer system 1200 also includes a main memory 1206, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 1202for storing information and instructions to be executed by processor1204. Main memory 1206 also may be used for storing temporary variablesor other intermediate information during execution of instructions to beexecuted by processor 1204. Such instructions, when stored innon-transitory storage media accessible to processor 1204, rendercomputer system 1200 into a special-purpose machine that is customizedto perform the operations specified in the instructions.

Computer system 1200 further includes a read only memory (ROM) 1208 orother static storage device coupled to bus 1202 for storing staticinformation and instructions for processor 1204. A storage device 1210,e.g., a magnetic disk, optical disk or flash disk (made of flash memorychips), is provided and coupled to bus 1202 for storing information andinstructions.

Computer system 1200 may be coupled via bus 1202 to a display 1212,e.g., a cathode ray tube (CRT), Liquid Crystal Display (LCD), OrganicLight-Emitting Diode Display (OLED), Digital Light Processing Display(DLP) or the like, for displaying information to a computer user. Aninput device 1214, including alphanumeric and other keys, is coupled tobus 1202 for communicating information and command selections toprocessor 1204. Another type of user input device is cursor control1216, such as a mouse, a trackball, a trackpad, or cursor direction keysfor communicating direction information and command selections toprocessor 1204 and for controlling cursor movement on display 1212. Thisinput device typically has two degrees of freedom in two axes, a firstaxis (e.g., x) and a second axis (e.g., y), that allows the device tospecify positions in a plane.

Removable storage media 1240 can be any kind of external storage media,including, but not limited to, hard-drives, floppy drives, IOMEGA® ZipDrives, Compact Disc-Read Only Memory (CD-ROM), Compact Disc-Re-Writable(CD-RW), Digital Video Disk-Read Only Memory (DVD-ROM), USB flash drivesand the like.

Computer system 1200 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware orprogram logic which in combination with the computer system causes orprograms computer system 1200 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 1200 in response to processor 1204 executing one or moresequences of one or more instructions contained in main memory 1206.Such instructions may be read into main memory 1206 from another storagemedium, such as storage device 1210. Execution of the sequences ofinstructions contained in main memory 1206 causes processor 1204 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data or instructions that cause a machine to operationin a specific fashion. Such storage media may comprise non-volatilemedia or volatile media. Non-volatile media includes, for example,optical, magnetic or flash disks, such as storage device 1210. Volatilemedia includes dynamic memory, such as main memory 1206. Common forms ofstorage media include, for example, a flexible disk, a hard disk, asolid state drive, a magnetic tape, or any other magnetic data storagemedium, a CD-ROM, any other optical data storage medium, any physicalmedium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM,NVRAM, any other memory chip or cartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 1202. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 1204 for execution. Forexample, the instructions may initially be carried on a magnetic disk orsolid state drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 1200 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 1202. Bus 1202 carries the data tomain memory 1206, from which processor 1204 retrieves and executes theinstructions. The instructions received by main memory 1206 mayoptionally be stored on storage device 1210 either before or afterexecution by processor 1204.

Computer system 1200 also includes a communication interface 1218coupled to bus 1202. Communication interface 1218 provides a two-waydata communication coupling to a network link 1220 that is connected toa local network 1222. For example, communication interface 1218 may bean integrated services digital network (ISDN) card, cable modem,satellite modem, or a modem to provide a data communication connectionto a corresponding type of telephone line. As another example,communication interface 1218 may be a local area network (LAN) card toprovide a data communication connection to a compatible LAN. Wirelesslinks may also be implemented. In any such implementation, communicationinterface 1218 sends and receives electrical, electromagnetic or opticalsignals that carry digital data streams representing various types ofinformation.

Network link 1220 typically provides data communication through one ormore networks to other data devices. For example, network link 1220 mayprovide a connection through local network 1222 to a host computer 1224or to data equipment operated by an Internet Service Provider (ISP)1226. ISP 1226 in turn provides data communication services through theworld wide packet data communication network now commonly referred to asthe “Internet” 1228. Local network 1222 and Internet 1228 both useelectrical, electromagnetic or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 1220 and through communication interface 1218, which carrythe digital data to and from computer system 1200, are example forms oftransmission media.

Computer system 1200 can send messages and receive data, includingprogram code, through the network(s), network link 1220 andcommunication interface 1218. In the Internet example, a server 1230might transmit a requested code for an application program throughInternet 1228, ISP 1226, local network 1222 and communication interface1218. The received code may be executed by processor 1204 as it isreceived, or stored in storage device 1210, or other non-volatilestorage for later execution.

What is claimed is:
 1. A method performed by a processing resource of adistributed storage system, the method comprising: responsive to anevent, obtaining information regarding a plurality of Quality of Service(QoS) settings assigned to a volume of the distributed storage systemthat is being utilized by a client; determining a difference between afirst QoS setting of the plurality of QoS settings and a second QoSsetting of the plurality of QoS settings; and responsive to determiningthe difference is less than a threshold: determining a new value of thefirst QoS setting or a third QoS setting of the plurality of QoSsettings that is greater than a respective current value of the firstQoS setting or the third QoS setting; and assigning the new value of thefirst QoS setting or the third QoS setting to the volume for the client.2. The method of claim 1, wherein the first QoS setting comprises amaximum input/output operations per second (IOPS) setting, the secondQoS setting comprises a minimum IOPS setting, and the third QoS settingcomprises a burst IOPS setting.
 3. The method of claim 2, whereindetermination of the new value of the burst IOPS setting comprisesapplying a dynamic factor relating to a magnitude of the distance to theburst IOPS setting.
 4. The method of claim 2, wherein determination ofthe new value of the burst IOPS setting comprises applying auser-specified factor indicative of a desired degree of aggressivenessin connection with increasing the burst IOPS setting.
 5. The method ofclaim 1, wherein the first QoS setting comprises a burst input/outputIOPS setting and the second QoS setting comprises a maximum IOPSsetting.
 6. The method of claim 5, wherein determination of the newvalue of the burst IOPS setting comprises applying a dynamic factorrelating to a magnitude of the distance to the burst IOPS setting. 7.The method of claim 5, wherein determination of the new value of theburst IOPS setting comprises applying a user-specified factor indicativeof a desired degree of aggressiveness in connection with increasing theburst IOPS setting.
 8. A distributed storage system comprising: aprocessing resource; and a non-transitory computer-readable medium,coupled to the processing resource, having stored therein instructionsthat when executed by the processing resource cause the distributedstorage system to: determine a set of volumes of a plurality of volumesof the distributed storage system, wherein each volume of the set ofvolumes satisfies a first QoS setting assigned to the volume and asecond QoS setting assigned to the volume, and wherein the plurality ofvolumes are being utilized by a client; determine a subset of the set ofvolumes in which each volume of the subset satisfies an upper bound of arange based on a minimum input/output operations per second (IOPS)setting of the volume; and for one or more volumes of the subset:determine a new value of the first QoS setting that is less than acurrent value of the first QoS setting; and assign the new value of thefirst QoS setting to the respective volume for the client.
 9. Thedistributed storage system of claim 8, wherein the first QoS settingcomprises the minimum IOPS setting and wherein the second QoS settingcomprises a maximum IOPS setting of the volume.
 10. The distributedstorage system of claim 8, wherein a given volume of the set satisfiesthe first QoS setting when the respective volume has not exceeded aminimum IOPS setting of the respective volume, and wherein the givenvolume of the set satisfies the second QoS setting when the respectivevolume has not exceeded a maximum IOPS setting of the given volume. 11.The distributed storage system of claim 8, wherein a given volume of thesubset satisfies the upper bound of the range based on the minimum IOPSsetting of the given volume when the given volume does not exceed theupper bound of the range between zero and the minimum IOPS settingduring a time window.
 12. The distributed storage system of claim 8,wherein the first QoS setting of each volume of the subset of volumes isgreater than a minimum threshold for the first QoS setting.
 13. Thedistributed storage system of claim 8, wherein the first QoS settingcomprises a maximum IOPS setting of the volume, and the second QoSsetting comprises the minimum IOPS setting.
 14. The distributed storagesystem of claim 8, wherein a given volume of the set satisfies the firstQoS setting when a maximum IOPS setting of the given volume is greaterthan a first threshold, and wherein the given volume of the setsatisfies the second QoS setting when a minimum IOPS setting of thegiven volume is less than a second threshold.
 15. The distributedstorage system of claim 8, wherein a given volume of the subsetsatisfies the upper bound of the range based on the minimum IOPS settingwhen the given volume has not exceeded the upper bound of the rangebetween the minimum IOPS setting and a maximum IOPS setting of the givenvolume during a time window.
 16. The distributed storage system of claim8, wherein the range is further based on a maximum IOPS setting of thevolume.
 17. A non-transitory computer-readable storage medium embodyinga set of instructions, which when executed by a processing resource of adistributed storage system, cause the distributed storage system to: foreach volume of one or more volumes of a plurality of volumes of thedistributed storage system being utilized by a client: determine a firstnumber of observations within a time window in which the volume operatesat below a minimum input/output operations per second (IOPS) setting ofthe volume; determine a second number of observations within the timewindow in which the volume operates at a range between the minimum IOPSsetting and a maximum IOPS setting of the volume; determine a thirdnumber of observations within the time window in which the volumeexceeds an upper bound of the range and in which the volume exceeds themaximum IOPS setting; determine whether a quotient based on the first,second, and third numbers of observations is greater than a percentagethreshold; and responsive to determining that the quotient is greaterthan the percentage, increase the minimum IOPS setting of the volume,by: determining a new value of the minimum IOPS setting for the volumethat is greater than a current value of the minimum IOPS setting; andassigning the new value of the minimum IOPS setting to the volume forthe client.
 18. The non-transitory computer-readable storage medium ofclaim 17, wherein execution of the instructions further causes thedistributed storage system to determine the quotient by dividing thethird number by a sum of the first and second numbers.
 19. Thenon-transitory computer-readable storage medium of claim 17, wherein thenew value is greater than the upper bound of the range.
 20. Thenon-transitory computer-readable storage medium of claim 17, whereinsaid determining the new value comprises responsive to determining adefault value of the minimum IOPS setting is greater than the currentvalue of the minimum IOPS setting, using the default value as the newvalue.